[Amazon Connect] 着信拒否リストをS3に置くだけで制御する
1 はじめに
AIソリューション部の平内(SIN)です。
Amazon Connect(以下、Connect)では、発信者の電話番号で処理を分けることが可能です。
コールセンターでは、いわゆる迷惑電話を避けるために、ブラックリスト的なものを管理している事もあるかも知れません。
下記の記事では、問い合わせフロー内、若しくは、DynamoDBで拒否リスト(電話番号)を管理する要領を試してみました。
今回は、このブラックリストをS3上のファイルで管理する仕組みを作成してみました。
ブラックリストの追加や削除のニーズが発生した時点で、直ちに、これを編集して更新するイメージです。
2 設定ファイル
設定ファイルは、エンジニア以外でも編集しやすいようにと考え、あえてJSONを避けてみました。
テキストのファイルに、単純に電話番号を列挙するだけです。
電話番号の指定は、国番号が日本固定となっていますが、国際プレフィックス(+81)から始まるものでも、0から始まるものでも、また、ハイフンの有無も問いません。 なお、空行や、#以降(コメント)は、無視されます。
DenyList.txt
# 旧システムからの引き継ぎ +81-90-1111-2222 +819012342222 090-2361-2222 09023613332 +81-50-1234-3232 +815012343231 09023613442 # 09023613332 一時的に許可 +815012343232 +815012343235 # 2018/12/18追加
このような設定ファイルをS3のバケットに配置します。
3 コンタクトフロー
テスト用に簡単なフローを用意しました。Lambdaを呼び出して、その戻り値で分岐しているだけです。 拒否リストに一致した時は、そのまま切断しています。
Lambdaの戻り値は、denyというキーがtrueがどうかを見ています。
4 Lambda
作成したLambdaのコードは以下のとおりです。設定ファイル(DenyList.txt)をS3からgetして、発信番号が含まれているかどうかを返します。
なお、番号非通知の場合は、リストに関係なく拒否としています。
const aws_sdk = require('aws-sdk'); const s3 = new aws_sdk.S3(); const bucket = 'devio-blog'; const key = 'DenyList.txt'; exports.handler = async function(event, context) { console.log(JSON.stringify(event)); // 発信者番号 const phoneNumber = event.Details.ContactData.CustomerEndpoint.Address; // 非通知の場合は、拒否 if (phoneNumber && phoneNumber == '') { return {deny: true}; } // オペレーション時間の取得 const data = await s3.getObject({Bucket: bucket,Key: key}).promise(); const operationTime = data.Body.toString(); var lines = operationTime.split('\n'); // コメント削除及び、余分な空白削除 lines = lines.map( line => { return line.replace(/#.*$/, '').replace(/\s+$/, ''); }); // 無効(空白)行の削除 lines = lines.filter( line => { return line != ''; }); // ハイフンの削除 lines = lines.map( line => { return line.replace(/-/g, ''); }); // 0で始まる場合に、+81に変換する lines = lines.map( line => { return line.replace(/^0/, '+81'); }); // 拒否リストにヒットするかどうか let result = (0 <= lines.indexOf(phoneNumber)); return { deny: result }; }
5 最後に
今回は、ブラックリストをS3上の設定ファイルで設定するようにしてみました。
S3上のファイルは、権限を絞ったポリシーのユーザーを発行し、SFTPクライアントなどで、簡単に更新する方法を提供できます。
利用者が軽易に設定を変更できるのは、運用上有効かもしれません。
弊社では、「Amazon Connect」の導入を検討している方を対象とした無料相談会を毎週開催中です。
また、音声を利用した各種ソリューションの導入支援を行っております。お気軽にお問い合わせください。